const app = getApp();

Page({
  /**
   * 页面的初始数据
   */
  data: {
    addressInfo: {
      username: '胡儒清',
      phone: 13800000000,
      address: '广东省深圳市龙岗区龙岗区龙岗区左创智慧501室'
    },
    // 总费用
    total_fee: "",

    discount: 2000,
    // 预订单详情
    detail: {
      carts:[]
    },
    // 显示支付
    showPay: false,
    orderParams: {
      mchid:'',
      total_fee:'',
      out_trade_no:'',
      body:'',
      attach:'',
      notify_url:'',
      nonce: ''
    }, // 支付发起参数
    orderResults: {}, // 支付结果
    paying: false // 标记用户是否已经点击了「支付」
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onLoad: function (options) {
    let preOrderId = options.preOrderId;
    this.getPreOrderDetai(preOrderId);
  },

  getPreOrderDetai(preOrderId) {
    let url = '/preOrder/detail';
    app.get(url,{preOrderId}).then(res=> {
      let total_fee = (res.result.totalMoney+res.result.expressFee) / 100000;
      this.setData({
        detail: res.result,
        total_fee
      })
    }).catch(err=> {
      console.log(err);
    })
  },

  submit() {
    // 获取支付需要的信息
    let url = "/pay/prePay";
   
    wx.login({
      success: res => {
        let data = {
          code: res.code,
          preOrderId: this.data.preOrderId,
          addressInfo: this.data.addressInfo
        };
        app
          .post(url, data)
          .then(res => {
            this.setData({
              orderParams: {
                sign: res.result.sign,
                mchid: res.result.mchid,
                total_fee: this.data.total_fee.toFixed(0),
                out_trade_no: res.result.out_trade_no,
                body: res.result.body,
                attach: res.result.attach,
                notify_url: res.result.notify_url,
                nonce: res.result.nonce
              },
              showPay: true
            });
          })
          .catch(err => {
            console.log(err);
          });
      }
    });
  },

  /******** 支付相关start **********/

  // 支付成功
  bindPaySuccess(res) {
    console.log("success", res);
    console.log("[支付成功] PAYJS 订单号：", res.detail.payjsOrderId);
    this.setData({
      orderResults: res.detail,
      needRefreshOrderParams: true
    });
    wx.showModal({
      title: "支付成功",
      content: "PAYJS 订单号：" + res.detail.payjsOrderId,
      showCancel: false
    });
  },
  /**
   * 支付失败的事件处理函数
   *
   * res.detail.error 为 true 代表传入小组件的参数存在问题
   * res.detail.navigateSuccess 代表了是否成功跳转到 PAYJS 小程序
   * res.detail.info 可能存有失败的原因
   *
   * 如果下单成功但是用户取消支付则可在 res.detail.info.payjsOrderId 拿到 payjs 订单号
   */
  bindPayFail(res) {
    console.log("fail", res);
    if (res.detail.error) {
      console.error("发起支付失败", res.detail.info);
    } else if (res.detail.navigateSuccess) {
      console.log("[取消支付] PAYJS 订单号：", res.detail.info.payjsOrderId);
    }
  },
  /**
   * 支付完毕的事件处理函数
   *
   * 无论支付成功或失败均会执行
   * 应当在此销毁 payjs 组件
   */
  bindPayComplete() {
    console.log("complete");
    this.setData({
      preparePay: false // 销毁 PAYJS 组件
    });
  },
  /**
   * 组件内部数据被修改时的事件
   *
   * 当前仅用于监听 paying 数据
   * 当用户跳转到 PAYJS 小程序并等待返回的过程中 paying 值为 true
   */
  bindDataChange(res) {
    if (res.detail.paying) {
      this.setData({
        paying: res.detail.paying
      });
    }
  }

  /******** 支付相关end **********/
});
